![]() |
|
|
rtk 20022002.1.1 (popravi)1. podnalogaNaročniki večjih količin tovora se običajno odločajo za prevoz tovora z ladjo.
Ko zabojniki prispejo v luko, jih morajo tam uskladiščiti, vse dokler ponje
ne pride naročnik ali pa jih morajo natovoriti na vlak. V neki luki zabojnike
nalagajo enega ob drugega in ko zapolnijo celo vrsto, se lotijo nalaganja v
drugo vrsto, nato tretjo in tako dalje. Ko se zapolni cela površina, začnejo
zabojnike nalagati še na naslednjo višino v enakem zaporedju kot prej (torej
prvi zabojnik na drugi višini pride položen na prvi zabojnik v prvi višini
itd.). Podano imamo število zabojnikov v vsaki vrsti NalogaPopravi program
Primer postavitve zabojev v plasteh za
Zabojnik s številko 16 na gornji sliki je četrti zabojnik v prvi vrsti druge plasti. Vhodni podatkiŠtevila Izhodni podatkiPoložaj zabojnika (plast, vrsta, stolpec) v obliki niza. PrimerVhod
Izhod
Uradna rešitevdef zabojnik(n,m,l,z):
plast = 1 + (z - 1) / (n * m)
vrsta = 1 + ((z - 1) % (n * m)) / n
stolpec = 1 + ((z - 1) % (n * m)) % n
izpis = 'Plast: ' + str(int(plast)) + ', '
izpis += 'Vrsta: ' + str(int(vrsta)) + ', '
izpis += 'Stolpec: ' + str(int(stolpec))
return izpis
2002.1.2 (popravi)1. podnalogaLiliput je majhno mesto z veliko avtobusnimi postajami. Vse proge mestnih
avtobusov so krožne. Vsaka postaja pa pripada natančno eni progi, torej nobena
dva avtobusa nikoli ne obiščeta iste avtobusne postaje. Težava je v tem, da
Liliputanci objavljajo vozne rede svojih avtobusov na prav poseben način.
Avtobusne postaje so oštevilčene s števili od Za primer vzemimo zaporedje števil Prvo število v zaporedju je NalogaTvoja naloga je popraviti program
Vhodni podatkiZaporedje števil, podano v seznamu. Omejitve vhodnih podatkov
Izhodni podatkiSeznam z vsemi avtobusnimi programi predstavljenimi kot seznam postaj. Zadnji element seznama pa je dolžina najdaljše proge. PrimerVhod
Izhod
Uradna rešitevdef avtobus(vozni_red):
N = len(vozni_red)
obiskane_postaje = [False for i in range(N)]
najdaljsa_proga = 0
proge = []
for j in range(N):
if not obiskane_postaje[j]:
obiskane_postaje[j] = True
proga = [j+1]
k = vozni_red[j]
while k != j+1:
proga.append(k)
obiskane_postaje[k-1] = True
k = vozni_red[k-1]
proge.append(proga)
if len(proga) > najdaljsa_proga:
najdaljsa_proga = len(proga)
proge.append(najdaljsa_proga)
return proge
2002.1.3 (popravi)1. podnalogaPri uporabi bančne kartice moramo dokazati, da poznamo kodo pin (osebno identifikacijsko številko). Podobno v deželi PinLand uporabljajo štirimestne črkovne kode pin tudi za dostop do pomembnih podatkov na mreži. Pri razbijanju kode pin si pomagajmo s poskušanjem: vemo, kakšne so dovoljene kode, in preizkusimo vse možnosti. Za testiranje je na voljo funkcija Za kodo pin veljata naslednji omejitvi:
NalogaPopravi program
Vhodni podatkiFunkcija nima vhodnega podatka. Izhodni podatkiNiz štirih znakov, ki predstavljajo pravo pin kodo. Uradna rešitevdef test(poskus):
'''Funkcija vrne True, če je pin pravilen in False sicer.'''
st = [66,90,88,65,78,30]
stevec = 0
for i in poskus[::-1]:
a = ord(i)
if a == st[stevec]:
stevec += 1
else:
return False
return True
def pin():
'''Funkcija s pomočjo funkcije test in poskušanjem najde pravo pin in jo izpiše.'''
mozni_znaki = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
poskus = [0,0,0,0]
for a in mozni_znaki:
poskus[0] = a
for b in mozni_znaki:
poskus[1] = b
for c in mozni_znaki:
poskus[2] = c
for d in mozni_znaki:
poskus[3] = d
poskus_str = ''.join(poskus)
if test(poskus_str):
return poskus_str
Mesto objave ob koncu projekta 15.9.2018
|